<?php

require_once '..' . DS . '/DAO/Conexao.php';
require_once 'BeanChamado.php';
require_once 'BeanMembro.php';
require_once 'BeanTesoureiro.php';

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of ModelCidade
 *
 * @author david
 */
class ModelChamado {

    public $p = null;

    public function ModelChamado() {
        $this->p = Conexao::Intancia()->Db();
    }

    public function getChamado($codigo, $tipo) {
        $sql = "SELECT
                    a.cha_id,
                    a.cha_assunto,
                    a.cha_descricao,
                    a.cha_abertura,
                    a.cha_conclusao,
                    a.cha_resposta,
                    b.mem_id,
                    b.mem_nome as membro,
                    d.mem_nome as tesoureiro
                FROM chamado a
                INNER JOIN membro b ON a.fk_mem_id = b.mem_id
                LEFT JOIN tesoureiro c ON a.fk_tes_id = c.tes_id
                LEFT JOIN membro d ON c.fk_mem_id = d.mem_id";

        // filtra pelo código
        if ($codigo != "") {
            $sql .= " WHERE a.fk_mem_id = ?";
        }

        // filtra só os não concluidos
        if($tipo != "" && $tipo == "notific") {
            $sql .= " WHERE a.cha_conclusao is null";
        }

        $sql .= " ORDER BY a.cha_abertura ASC";

        $stmt = $this->p->prepare($sql);

        if ($codigo != "") {
            $stmt->bindValue(1, $codigo);
        }

        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }

        while ($linha = $stmt->fetch()) {
            $beanChamado = new BeanChamado();
            $beanChamado->codigo = $linha["cha_id"];
            $beanChamado->assunto = $linha["cha_assunto"];
            $beanChamado->descricao = $linha["cha_descricao"];
            $beanChamado->abertura = $linha["cha_abertura"];
            $beanChamado->conclusao = $linha["cha_conclusao"];
            $beanChamado->resposta = $linha["cha_resposta"];

            $beanMembro = new BeanMembro();
            $beanMembro->codigo = $linha["mem_id"];
            $beanMembro->nome = $linha["membro"];
            
            $beanChamado->beanMembro = $beanMembro;
            
            $beanMembro = new BeanMembro();
            $beanMembro->nome = $linha["tesoureiro"];

            $beanTesoureiro = new BeanTesoureiro();
            $beanTesoureiro->beanMembro = $beanMembro;

            $beanChamado->beanTesoureiro = $beanTesoureiro;

            $resultado[] = $beanChamado;
        }

        return $resultado;
    }

    public function getChamadoNotific() {
        $sql = "SELECT count(*) as qtde FROM chamado WHERE cha_conclusao is null;";

        $stmt = $this->p->prepare($sql);
        $res = $stmt->execute();

        $resultado = 0;
        if ($res != 1) {
            $resultado = "erro";
        }else{
            while($linha = $stmt->fetch()){
                $resultado = $linha["qtde"];
            }
        }
        return $resultado;
    }

    public function setChamado($assunto, $descricao, $membro) {
        $sql = "INSERT INTO chamado 
                    (fk_mem_id, cha_assunto, cha_descricao, cha_abertura)
                VALUES(?,?,?,NOW());";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $membro);
        $stmt->bindValue(2, $assunto);
        $stmt->bindValue(3, $descricao);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

    public function setFinalizeChamado($descricao, $tesoureiro, $codigo) {
        $sql = "UPDATE chamado SET
                    cha_resposta = ?, 
                    cha_conclusao = now(),
                    fk_tes_id = (SELECT max(tes_id) FROM tesoureiro WHERE fk_mem_id = ?)
                 WHERE cha_id = ?;";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $descricao, PDO::PARAM_STR);
        $stmt->bindValue(2, $tesoureiro);
        $stmt->bindValue(3, $codigo);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

    public function setDeleteChamado($chamado, $membro) {
        $sql = "DELETE FROM chamado WHERE cha_id = ? AND fk_mem_id = ? AND fk_tes_id IS NULL;";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $chamado);
        $stmt->bindValue(2, $membro);
        $res = $stmt->execute();

        $resultado = array();
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

    public function setReturnChamado($codigo) {
        $sql = "UPDATE chamado SET
                    cha_resposta = null, 
                    cha_conclusao = null,
                    fk_tes_id = null
                 WHERE cha_id = ?;";

        $stmt = $this->p->prepare($sql);
        $stmt->bindValue(1, $codigo);
        $res = $stmt->execute();

        $resultado = null;
        if ($res != 1) {
            $resultado = "erro";
        }
        return $resultado;
    }

}